package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * IO:Input和Output,输入与输出
 * Java将输入和输出用"流Stream"表达，分为u输入流和输出流
 * 我们可以将它们想象为连接我们的程序和另一个设备之间的"管道"，通过它们可以读写设备
 * Java将输入和输出流定义了两个对应的超类InputStream和OutputStream：
 * 1.InputStream:
 * 输入流:反省是从外界到程序的方向，用于读取数据的流，是一个抽象类，定义了读取字节的相关方法
 * 2.OutputStream:
 * 输出流:方向是从程序到外界的方向，用于写出数据的流，是一个抽象类，定义了写出字节的相关方法
 *
 * 文件流: FileInputStream和FileOutputStream;
 * 文件继承自InputStream和OutputStream,用于对文件进行读写操作
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        /*
        文件输出流两个常用的构造器
        1.FileOutputStream(String fileName)
        2.FileOutputStream(File file)
        文件流创建是如果指定的文件不存在则会自动创建，前提是该文件所在的目录必须存在，则不存在则发现异常
         */
        File file = new File("fos.dat");
        FileOutputStream fos = new FileOutputStream(file);//根据File实例义文件输出流
        //FileOutputStream fos = new FileOutputStream("fos.dat");//定义文件的输出流
        /*
        OutputStream(所有字节输出流的超类)上定义了写出文字的相关方法:write
        void write(int d):
        通过该输出流向目标位置写出1个字节，写出的是给定的int值对应的2进制的"低八位"
         */
        fos.write(97);//向fos.dar中写入了1个字节
        fos.write(98);//向fos.dat中又写入了1个字节
        System.out.println("写出完毕!");
        fos.close();//关闭流



        File fos1 = new File("a.txt");
        FileOutputStream f = new FileOutputStream(fos1);
        f.write(36);
        f.write(-1);
        System.out.println("完毕");
        f.close();

























    }
}
